//package com.by.common.controller;
//
//import com.google.code.kaptcha.Producer;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//import javax.imageio.ImageIO;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServletResponse;
//import java.awt.image.BufferedImage;
//import java.io.IOException;
//import java.util.concurrent.TimeUnit;
//
///**
// * @author Ye QS
// * @version 0.1
// * @className LoginController
// * @description
// * @date 2024/9/9 20:20
// * @since jdk11
// */
//@RestController
//public class LoginController {
//    //注入DefaultKaptcha的bean对象--生成验证码图片的
//    @Resource(name = "captchaProducer")
//    private Producer producer;
//    //注入redis模板
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//    @RequestMapping("/captcha/captchaImage")
//    public void captchaImage(HttpServletResponse response) {
//
//        ServletOutputStream outputStream = null;
//        try {
//            //生成验证码图片中的文本
//            String text = producer.createText();
//            //使用验证码文本生成验证码图片--BufferedImage对象就代表生成的验证码图片，在内存中
//            BufferedImage image = producer.createImage(text);
//            //将验证码文本作为键保存到redis
//            // 使用RedisTemplate的操作方法设置一个键值对，并指定过期时间
//            // redisTemplate: 是Spring Data Redis提供的用于操作Redis数据库的对象。
//            // opsForValue(): 获取用于操作字符串类型的Redis数据的工具类。
//            // set(String key, V value, long timeout, TimeUnit unit): 方法用于在Redis中存储一个key-value形式的数据，并同时设置该数据的有效生存时间。
//            // text: 表示要作为Redis中的键（Key）来保存数据，这里的text应该是之前定义的一个变量或表达式。
//            // "": 表示与键关联的值，在这里为空字符串。
//            // 30 * 60: 计算得到1800秒，表示设置的数据将在1800秒后自动过期并被删除。
//            // TimeUnit.SECONDS: 指定前面的时间单位为秒。
//            redisTemplate.opsForValue().set(text, "", 30 * 60, TimeUnit.SECONDS);
//            // 将生成的验证码图片响应给前端浏览器
//            // 设置HTTP响应的内容类型为JPEG图像
//            response.setContentType("image/jpeg");
//            // 获取输出流对象，用于向客户端发送数据
//            outputStream = response.getOutputStream();
//            // 使用Java的ImageIO工具类将图片以JPEG格式写入到输出流中
//            // 这样做可以将图片直接展示在前端页面上
//            ImageIO.write(image, "jpg", outputStream);
//            outputStream.flush();
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (outputStream != null) {
//                try {
//                    outputStream.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//
//    }
//}
